﻿using Kavaa.Modules.PortailMedical.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;

namespace Kavaa.Modules.PortailMedical.Interface
{
    /// <summary>
    /// Contrat de service pour la gestion des PortailMedical
    /// </summary>
    [ServiceContract]
    public interface ICabinet
    {
        /// <summary>
        /// Retourne la liste des Cliniques 
        /// </summary>
        /// <returns>Collection des Cliniques</returns>
        [OperationContract]
        Cliniques DecouvrirCliniques(int acteId, int villeId, int userId);
        [OperationContract]
        void AddAccreditation(int MedecinId, int CliniqueId, int ActeId);
         [OperationContract]
        Accreditations GetAccreditationsEnCoursByUser(int userId);
         [OperationContract]
        Accreditations GetAccreditationsAccordeesByUser(int userId);
         [OperationContract]
        Accreditations GetAccreditationsRefuseesByUser(int userId);
         [OperationContract]
         Cliniques DecouvrirCliniquesAccredit(int acteId, int userId);
         [OperationContract]
         Reservations GetReservbloquees(int CliniqueId, int acteId);
         [OperationContract]
         int SaveReservation(int id, DateTime DateDebut, DateTime DateFin, int ActeId, int CliniqueId, int MedecinId, String body);
         [OperationContract]
         Categories GetBlocsDispo(DateTime DateDebut, DateTime DateFin, int CliniqueId, int acteId);
         [OperationContract]
         Boolean IsMedecinFree(DateTime DateDebut, DateTime DateFin, int IdMedecin);
         [OperationContract]
         void AddReservCategorie(int ReservId, int BlocId);
         [OperationContract]
         Reservations GetReservMedecin(int IdMedecin);
         [OperationContract]
         void UpdateReservation(DateTime DateDebut, DateTime DateFin, int ActeId, int CliniqueId, int MedecinId, String body, int id);
         [OperationContract]
         Boolean existReserv(int id_reserv);
         [OperationContract]
         int GetLastIndexReserv();
         [OperationContract]
         void DeleteReserv(int reservId);
         [OperationContract]
         Proprietes GetProprietesCategorie(int id_categorie);
         [OperationContract]
         Reservations GetReservMedecinEnCours(int IdMedecin);
         [OperationContract]
         Reservations GetReservMedecinAccordees(int IdMedecin);
         [OperationContract]
         Reservations GetReservMedecinRefusees(int IdMedecin);

         [OperationContract]
         void UpdateReservConfirmee(int idReserv, int idPatient, string RemarquesPatient);
         [OperationContract]
         int AddPatient(Patient patient);
         [OperationContract]
         Reservation GetInfoConvocation(int ReservId);
    }
}
